package com.zhz.mall.common.util.enums;

import java.util.Objects;
import java.util.Optional;

/**
 * EnumValueResolver
 * <p>
 * 枚举值解析器
 *
 * @author zhouhengzhe
 */
public interface EnumValueResolver<E extends Enum<E>, V>  {


    /**
     * 获取枚举值
     */
    V getValue();


    /**
     * 获取 String 类型的枚举值
     */
    default String getStringValue() {
        return getValue().toString();
    }


    /**
     * 获取 int 类型的枚举值
     */
    default int getIntValue() {
        return Integer.parseInt(getStringValue());
    }



    /**
     * 获取枚举描述
     */
    default String getDesc() {
        return Optional.ofNullable(getValue()).map(String::valueOf).orElse(null);
    }



    default boolean isEquals(V value) {
        return Objects.equals(getValue(), value);
    }


    default boolean isNotEquals(V value) {
        return !isEquals(value);
    }

}